package isanfeng.tuxiaoer.pattern.creational.Esingleton.lazy;

/**
 * 单例模式
 * 定义：保证一个类仅有一个实例，并提供一个全局访问点
 * 适用场景：
 *      想确保任何情况下都绝对只有一个实例
 *          数据库连接池
 *          单例计数器
 *          线程池
 * 重点：
 *      私有构造器
 *      线程安全
 *      延迟加载（使用时，再加载）
 *      序列化和反序列化安全
 *      反射
 * 实用技能
 *      反编译
 *      内存原理
 *      多线程Debug
 * 单例-相关设计模式
 * 单例模式和工厂模式
 * 单例模式和享元模式
 * 优点：
 *      在内存里只有一个实例，减少了内存开销
 *      可以避免对资源的多重占有
 *      设置全局访问点，严格控制访问
 * 缺点：
 *      没有接口，扩展困难
 * 重排序：volatile
 * @author 李红辉
 * @version 1.0
 * @date 2019/10/9 11:39
 */
public class Test {
    public static void main(String[] args) {
        Thread t1 = new Thread(new T());
        Thread t2 = new Thread(new T());
        t1.start();
        t2.start();
        System.out.println("end");
    }
}
